import axios from 'axios'
const BASE_URL = import.meta.env.VITE_APP_SERVICE_URL
const TIMEOUT = 10 * 60 * 1000

interface Props {
  baseUrl?: string
  timeout?: number
}
const createAxios = (options?: Props) => {
  const { baseUrl, timeout } = options || {}
  // 创建一个新的 Axios 实例
  const instance = axios.create({
    baseURL: baseUrl || BASE_URL, // 设置 baseURL
    timeout: timeout || TIMEOUT,
    // paramsSerializer: (params) => {
    //   return qs.stringify(params, { arrayFormat: 'repeat' });
    // },
    headers: {
      'Content-Type': 'application/json' // 设置默认的 Content-Type
    }
  })

  // 请求拦截器，在发送请求之前进行一些处理
  instance.interceptors.request.use(
    (config) => {
      config.headers['x-token'] = localStorage.getItem('token') || ''
      // 在这里可以进行一些请求相关的处理，例如添加 token 等

      return config
    },
    (error) => {
      // 请求错误处理
      // 在这里可以进行一些通用的请求错误处理，例如打印错误日志等
      console.error('Request Error:', error)
      return Promise.reject(error)
    }
  )

  // 响应拦截器，在接收到响应后进行一些处理
  instance.interceptors.response.use(
    (response) => {
      // 在这里可以进行一些响应相关的处理，例如对响应数据进行预处理等
      return response.data
    },
    (error) => {
      // 响应错误处理
      // 在这里可以进行一些通用的响应错误处理，例如根据响应状态码判断错误类型等
      console.error('Response Error:', error)
      // message.error(`${error?.config?.url} ${error.message}`);
      return Promise.reject(error)
    }
  )

  return instance
}

export default createAxios
